# Preferred Frame Writing [๐Ÿ  Home](/) - [About](/about.md.html) - [Submissions](/submissions.md.html) - [Policies](/policies.md.html) - [Journals](/journals.md.html) ---

Introducing 'git snooze', a timed 'git stash'

A timed git-stash that resets automatically

An M. Rodriguez

2026-01-25

One-Sentence Summary: git snooze lets you defer local Git changes for a fixed time, and forces them to come back so they canโ€™t be forgotten.

Summary: git snooze is a small Git tool that temporarily hides local changes for a fixed number of days. Unlike git stash, snoozed changes automatically reappear after their deadline and warn you, making forgotten work impossible.

Keywords: git, productivity, developer-tools, cli, workflow, vibe-coding

![git snooze: git stash with a timer.](https://siran.github.io/assets/writing/git-snooze.png) ## Like git-stash with a timer `git stash` is useful. Itโ€™s also a graveyard. People stash things โ€œfor laterโ€โ€ฆ and later never comes. Changes disappear. Context is lost. Work is forgotten. Thatโ€™s not a Git problem. Thatโ€™s a **human workflow** problem. ## The idea **What if stashed work had a timer?** * Hide changes for *N* days * Automatically bring them back * Warn you when they reappear * Never rely on memory Thatโ€™s `git snooze`. ## What is git snooze? `git snooze` is a small Git-side tool for **time-based deferral of local changes**. Think of it as: > **A timed alternative to `git stash` that resets automatically.** ### Core properties * โฑ Time-based (default: 4 days) * ๐Ÿ‘€ Always visible (`git snooze -l`) * โš  Automatically reappears * ๐Ÿง  Impossible to forget * ๐Ÿ  Local-only (no history, no remotes) ## How it works (briefly) * **Tracked files** โ†’ hidden using `git update-index --skip-worktree` * **Untracked files** โ†’ renamed to `*.Nd.snoozed.*` and ignored via `.gitignore` * **State** โ†’ stored locally in `.git/snooze.db` * **Automation** โ†’ a `pre-commit` hook runs `git snooze sweep` โ†’ expired snoozes are automatically undone โ†’ a warning is printed to stdout No commits. No branches. No magic. ## Installation (30 seconds) ### Download link (raw script) ๐Ÿ‘‰ **Download:** **`https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py`** ### One-line install (recommended) ```sh curl -fsSL "https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py" -o /tmp/git-snooze \ && python3 /tmp/git-snooze install --global \ && rm -f /tmp/git-snooze ``` Thatโ€™s it. * Installs `git-snooze` to `~/.local/bin` * Sets **one alias only**: ``` git snooze โ†’ git-snooze ``` ## Basic usage ### Snooze a file (default: 4 days) ```sh git snooze notes.md ``` ### Snooze for a specific duration ```sh git snooze notes.md 7 ``` ### Snooze *everything* (stash-like, but timed) ```sh git snooze all git snooze all 14 ``` ## Unsnoozing ### Unsnooze one file ```sh git snooze -u notes.md ``` ### Unsnooze everything immediately ```sh git snooze -u all ``` Unsnoozing is **idempotent** and **index-authoritative**. Even if metadata is missing, the index is always restored. ## Seeing whatโ€™s snoozed ```sh git snooze -l ``` Output is grouped by **days remaining**, so you can see whatโ€™s about to reappear. ## Automatic reminders (the important part) On every commit: * `git snooze sweep` runs automatically * Expired snoozes are undone * A warning is printed if anything wakes up You **cannot accidentally forget** snoozed work. ## Extra safety * The tool **refuses to snooze itself** unless forced * `git snooze all` never breaks your setup * `git snooze doctor --repair` can rebuild metadata if needed * `git snooze uninstall` cleans up cleanly (and asks before deleting state) ## Why this exists I kept losing work in `git stash`. Not because Git is bad โ€” but because **humans forget**. `git snooze` doesnโ€™t trust memory. It trusts **time**. Thatโ€™s the whole idea. ## Source & license * Provided as-is, use at your own risk. * Single-file script (Python 3.6+) * Readable, hackable, local-only * MIT-style, do what you want ๐Ÿ‘‰ **Source / download:** **[https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py](https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py)** --- โœ… 100% vibe-code "certified"! ๐Ÿ’ฏ ![git snooze -h](https://siran.github.io/assets/writing/image.png)
--- - [Preferred Frame Writing on GitHub.com](https://github.com/siran/writing) (built: 2026-01-26 06:58 EST UTC-5)